package top.szhome.framework.core.tools.datastruct;

import top.szhome.framework.core.tools.util.ObjectUtil;

import java.util.List;

/**
 * 树结构
 *
 * @author 唐加利
 * @date 2023/8/4
 **/
public interface Tree<N extends Tree<N, T>, T> {

    /**
     * 获取节点ID
     * @return
     */
    T getId();

    /**
     * 获取父节点ID
     * @return
     */
    T getParentId();

    /**
     * 获取字节点列表
     * @return
     */
    List<N> getChildren();

    /**
     * 设置字节点
     * @param children
     */
    void setChildren(List<N> children);

    /**
     * 是否为叶子节点
     * @return
     */
    default boolean isLeaf() {
        return ObjectUtil.isEmpty(getChildren());
    }

}
